home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / parallax / mac_sit.hqx / Parallaxis 2.11 / rot.z < prev    next >
Text File  |  1992-01-09  |  8KB  |  250 lines

  1. START
  2. 64 PE
  3. 4 PORTS
  4. SCALAR     I4 8( I8 ) I4 B1
  5. VECTOR     I2 I5 B3
  6.     1  :    GOTO 22;
  7.     2  :    PROC 1 VECTOR I1;
  8.         POPV VI1:1;
  9.         VI[VI1:1] := 0;
  10.         PUSHV VI1:1;
  11.         RETURN;
  12.     3  :    PROC 1;
  13.         ERROR "value out of range";
  14.         RETURN;
  15.     4  :    PROC 1;
  16.         ERROR "division by 0";
  17.         RETURN;
  18.     5  :    PROC 1
  19.         SCALAR    
  20.         VECTOR     I3 I1; group number 1
  21.         PUSHV ADDR VI1:3;
  22.     6  :    VI1:1 := ID - 1; for PIC calculating DIMi
  23.         VI1:2 := VI1:1 MOD 8;      DIM2
  24.         VI1:1 := VI1:1 / 8;      DIM1
  25.     7  :    VI1:3 := VI1:1 * 8;
  26.     8  :    VI1:4 := VI1:2 + 1;
  27.     9  :    VI1:3 := VI1:3 + VI1:4;
  28.         VI1:3 := VI1:3 + 1;
  29.         IF VI1:1 < 0 CALL 2;
  30.         IF VI1:1 > 7 CALL 2;
  31.         IF VI1:4 < 0 CALL 2;
  32.         IF VI1:4 > 7 CALL 2;
  33.         CONNECT 1 TO 2 AT VI1:3;
  34.    10  :    VI1:3 := VI1:1 * 8;
  35.    11  :    VI1:4 := VI1:2 - 1;
  36.    12  :    VI1:3 := VI1:3 + VI1:4;
  37.         VI1:3 := VI1:3 + 1;
  38.         IF VI1:1 < 0 CALL 2;
  39.         IF VI1:1 > 7 CALL 2;
  40.         IF VI1:4 < 0 CALL 2;
  41.         IF VI1:4 > 7 CALL 2;
  42.         CONNECT 2 TO 1 AT VI1:3;
  43.    13  :    VI1:4 := VI1:1 + 1;
  44.    14  :    VI1:3 := VI1:4 * 8;
  45.    15  :    VI1:3 := VI1:3 + VI1:2;
  46.         VI1:3 := VI1:3 + 1;
  47.         IF VI1:4 < 0 CALL 2;
  48.         IF VI1:4 > 7 CALL 2;
  49.         IF VI1:2 < 0 CALL 2;
  50.         IF VI1:2 > 7 CALL 2;
  51.         CONNECT 3 TO 4 AT VI1:3;
  52.    16  :    VI1:4 := VI1:1 - 1;
  53.    17  :    VI1:3 := VI1:4 * 8;
  54.    18  :    VI1:3 := VI1:3 + VI1:2;
  55.         VI1:3 := VI1:3 + 1;
  56.         IF VI1:4 < 0 CALL 2;
  57.         IF VI1:4 > 7 CALL 2;
  58.         IF VI1:2 < 0 CALL 2;
  59.         IF VI1:2 > 7 CALL 2;
  60.         CONNECT 4 TO 3 AT VI1:3;
  61.    19  :    POPV VI1:3;
  62.    20  :    RETURN;    group number : 1
  63.    21  :    PROC 1;    configuration : PIC
  64.         VI0:1 := ID - 1; for PIC calculating DIMi
  65.         VI0:2 := VI0:1 MOD 8;      DIM2
  66.         VI0:1 := VI0:1 / 8;      DIM1
  67.         RETURN;    configuration : PIC
  68.    22  :    CALL 5;    connections
  69.    23!20  :    SI0:1 := 8; line 20 column 2 
  70.    24!22  :    SI0:3 := 0; line 22 column 2 
  71.    25  :    SI0:69 := 7;
  72.    26!22  :    IF SI0:3 > SI0:69 GOTO 43; line 22 column 2 
  73.    27!23  :    SI0:4 := 0; line 23 column 4 
  74.    28  :    SI0:70 := 7;
  75.    29!23  :    IF SI0:4 > SI0:70 GOTO 41; line 23 column 4 
  76.    30!24  :    IF SI0:3 < 0 CALL 3; line 24 column 6 
  77.    31  :    IF 7 < SI0:3 CALL 3;
  78.    32  :    IF SI0:4 < 0 CALL 3;
  79.    33  :    IF 7 < SI0:4 CALL 3;
  80.    34  :    SI0:72 := SI0:4 * SIZE( I1 );
  81.    35  :    SI0:71 := ADDR SI0:5 + SI0:72;
  82.    36  :    SI0:72 := SI0:3 * SIZE( I8 );
  83.    37  :    SI0:71 := SI0:71 + SI0:72;
  84.    38  :    SI[SI0:71] := 0;
  85.    39  :    SI0:4 := SI0:4 + 1;
  86.    40  :    GOTO 29;
  87.    41  :    SI0:3 := SI0:3 + 1;
  88.    42  :    GOTO 26;
  89.    43!27  :    SI0:3 := 0; line 27 column 2 
  90.    44  :    SI0:69 := 7;
  91.    45!27  :    IF SI0:3 > SI0:69 GOTO 57; line 27 column 2 
  92.    46!28  :    IF SI0:3 < 0 CALL 3; line 28 column 4 
  93.    47  :    IF 7 < SI0:3 CALL 3;
  94.    48  :    IF SI0:3 < 0 CALL 3;
  95.    49  :    IF 7 < SI0:3 CALL 3;
  96.    50  :    SI0:71 := SI0:3 * SIZE( I1 );
  97.    51  :    SI0:70 := ADDR SI0:5 + SI0:71;
  98.    52  :    SI0:71 := SI0:3 * SIZE( I8 );
  99.    53  :    SI0:70 := SI0:70 + SI0:71;
  100.    54  :    SI[SI0:70] := 1;
  101.    55  :    SI0:3 := SI0:3 + 1;
  102.    56  :    GOTO 45;
  103.    57!30  :    SI0:3 := 1; line 30 column 2 
  104.    58  :    SI0:69 := 5;
  105.    59!30  :    IF SI0:3 > SI0:69 GOTO 72; line 30 column 2 
  106.    60!31  :    IF SI0:3 < 0 CALL 3; line 31 column 4 
  107.    61  :    IF 7 < SI0:3 CALL 3;
  108.    62  :    SI0:71 := SI0:3 * SIZE( I1 );
  109.    63  :    SI0:70 := ADDR SI0:5 + SI0:71;
  110.    64  :    SI[SI0:70] := 1;
  111.    65!32  :    IF SI0:3 < 0 CALL 3; line 32 column 4 
  112.    66  :    IF 7 < SI0:3 CALL 3;
  113.    67  :    SI0:71 := SI0:3 * SIZE( I8 );
  114.    68  :    SI0:70 := ADDR SI0:5 + SI0:71;
  115.    69  :    SI[SI0:70] := 1;
  116.    70  :    SI0:3 := SI0:3 + 1;
  117.    71  :    GOTO 59;
  118.    72!36  :    WRITE EOL; line 36 column 2 
  119.    73!37  :    WRITE " ORIGINAL IMAGE"; line 37 column 2 
  120.    74!38  :    WRITE EOL; line 38 column 2 
  121.    75!39  :    SI0:3 := 7; line 39 column 2 
  122.    76  :    SI0:69 := 0;
  123.    77!39  :    IF SI0:3 < SI0:69 GOTO 95; line 39 column 2 
  124.    78!40  :    SI0:4 := 0; line 40 column 4 
  125.    79  :    SI0:70 := 7;
  126.    80!40  :    IF SI0:4 > SI0:70 GOTO 92; line 40 column 4 
  127.    81!41  :    IF SI0:3 < 0 CALL 3; line 41 column 6 
  128.    82  :    IF 7 < SI0:3 CALL 3;
  129.    83  :    IF SI0:4 < 0 CALL 3;
  130.    84  :    IF 7 < SI0:4 CALL 3;
  131.    85  :    SI0:72 := SI0:4 * SIZE( I1 );
  132.    86  :    SI0:71 := ADDR SI0:5 + SI0:72;
  133.    87  :    SI0:72 := SI0:3 * SIZE( I8 );
  134.    88  :    SI0:71 := SI0:71 + SI0:72;
  135.    89  :    WRITE SI[SI0:71] 2;
  136.    90  :    SI0:4 := SI0:4 + 1;
  137.    91  :    GOTO 80;
  138.    92!43  :    WRITE EOL; line 43 column 4 
  139.    93  :    SI0:3 := SI0:3 - 1;
  140.    94  :    GOTO 77;
  141.    95!46  :    CALL 21; line 46 column 2 
  142.    96  :    LOAD VI0:3 WITH SI0:5;
  143.    97  :    GOTO 199; line 48 column 2 
  144.    98!49  :    SI0:2 := SI0:1 / 2; line 49 column 4 
  145.    99!50  :    CALL 21; line 50 column 4 
  146.   100!51  :    IF SI0:1 = 0 CALL 4; line 51 column 6 
  147.   101  :    VI0:7 := VI0:1 MOD SI0:1;
  148.   102!52  :    IF SI0:1 = 0 CALL 4; line 52 column 6 
  149.   103  :    VI0:6 := VI0:2 MOD SI0:1;
  150.   104!54  :    VI0:4 := VI0:3; line 54 column 6 
  151.   105!55  :    VB0:1 := VI0:6 < SI0:2; line 55 column 6 
  152.   106  :    VB0:2 := TRUE;
  153.   107  :    IF VB0:1 CALL 124;
  154.   108  :    IF VB0:2 CALL 110;
  155.   109  :    GOTO 139;
  156.   110  :    PROC 1;
  157.   111!58  :    IF SI0:2 > 0 GOTO 113; line 58 column 24 
  158.   112  :    ERROR "number must be positive";
  159.   113  :    SI0:69 := 0;
  160.   114  :    PROPAGATE VI0:4 OUT 4 IN 3;
  161.   115  :    SI0:69 := SI0:69 + 1;
  162.   116  :    IF SI0:69 < SI0:2 GOTO 114;
  163.   117!60  :    VB0:1 := VI0:7 < SI0:2; line 60 column 24 
  164.   118  :    IF VB0:1 CALL 120;
  165.   119  :    GOTO 123;
  166.   120  :    PROC 1;
  167.   121!60  :    VI0:5 := VI0:4; line 60 column 41 
  168.   122  :    RETURN;
  169.   123  :    RETURN;
  170.   124  :    PROC 1;
  171.   125  :    VB0:2 := FALSE;
  172.   126!55  :    IF SI0:2 > 0 GOTO 128; line 55 column 24 
  173.   127  :    ERROR "number must be positive";
  174.   128  :    SI0:69 := 0;
  175.   129  :    PROPAGATE VI0:4 OUT 3 IN 4;
  176.   130  :    SI0:69 := SI0:69 + 1;
  177.   131  :    IF SI0:69 < SI0:2 GOTO 129;
  178.   132!57  :    VB0:3 := VI0:7 >= SI0:2; line 57 column 24 
  179.   133  :    IF VB0:3 CALL 135;
  180.   134  :    GOTO 138;
  181.   135  :    PROC 1;
  182.   136!57  :    VI0:5 := VI0:4; line 57 column 41 
  183.   137  :    RETURN;
  184.   138  :    RETURN;
  185.   139!63  :    VI0:4 := VI0:3; line 63 column 6 
  186.   140!64  :    VB0:2 := VI0:7 < SI0:2; line 64 column 6 
  187.   141  :    VB0:1 := TRUE;
  188.   142  :    IF VB0:2 CALL 159;
  189.   143  :    IF VB0:1 CALL 145;
  190.   144  :    GOTO 174;
  191.   145  :    PROC 1;
  192.   146!67  :    IF SI0:2 > 0 GOTO 148; line 67 column 24 
  193.   147  :    ERROR "number must be positive";
  194.   148  :    SI0:69 := 0;
  195.   149  :    PROPAGATE VI0:4 OUT 1 IN 2;
  196.   150  :    SI0:69 := SI0:69 + 1;
  197.   151  :    IF SI0:69 < SI0:2 GOTO 149;
  198.   152!69  :    VB0:2 := VI0:6 >= SI0:2; line 69 column 24 
  199.   153  :    IF VB0:2 CALL 155;
  200.   154  :    GOTO 158;
  201.   155  :    PROC 1;
  202.   156!69  :    VI0:5 := VI0:4; line 69 column 41 
  203.   157  :    RETURN;
  204.   158  :    RETURN;
  205.   159  :    PROC 1;
  206.   160  :    VB0:1 := FALSE;
  207.   161!64  :    IF SI0:2 > 0 GOTO 163; line 64 column 24 
  208.   162  :    ERROR "number must be positive";
  209.   163  :    SI0:69 := 0;
  210.   164  :    PROPAGATE VI0:4 OUT 2 IN 1;
  211.   165  :    SI0:69 := SI0:69 + 1;
  212.   166  :    IF SI0:69 < SI0:2 GOTO 164;
  213.   167!66  :    VB0:3 := VI0:6 < SI0:2; line 66 column 24 
  214.   168  :    IF VB0:3 CALL 170;
  215.   169  :    GOTO 173;
  216.   170  :    PROC 1;
  217.   171!66  :    VI0:5 := VI0:4; line 66 column 41 
  218.   172  :    RETURN;
  219.   173  :    RETURN;
  220.   174!72  :    VI0:3 := VI0:5; line 72 column 6 
  221.   175!74  :    SI0:1 := SI0:2; line 74 column 4 
  222.   176!76  :    CALL 21; line 76 column 4 
  223.   177  :    STORE VI0:3 TO SI0:5;
  224.   178!78  :    WRITE EOL; line 78 column 4 
  225.   179!79  :    SI0:3 := 7; line 79 column 4 
  226.   180  :    SI0:69 := 0;
  227.   181!79  :    IF SI0:3 < SI0:69 GOTO 199; line 79 column 4 
  228.   182!80  :    SI0:4 := 0; line 80 column 6 
  229.   183  :    SI0:70 := 7;
  230.   184!80  :    IF SI0:4 > SI0:70 GOTO 196; line 80 column 6 
  231.   185!81  :    IF SI0:3 < 0 CALL 3; line 81 column 8 
  232.   186  :    IF 7 < SI0:3 CALL 3;
  233.   187  :    IF SI0:4 < 0 CALL 3;
  234.   188  :    IF 7 < SI0:4 CALL 3;
  235.   189  :    SI0:72 := SI0:4 * SIZE( I1 );
  236.   190  :    SI0:71 := ADDR SI0:5 + SI0:72;
  237.   191  :    SI0:72 := SI0:3 * SIZE( I8 );
  238.   192  :    SI0:71 := SI0:71 + SI0:72;
  239.   193  :    WRITE SI[SI0:71] 2;
  240.   194  :    SI0:4 := SI0:4 + 1;
  241.   195  :    GOTO 184;
  242.   196!83  :    WRITE EOL; line 83 column 6 
  243.   197  :    SI0:3 := SI0:3 - 1;
  244.   198  :    GOTO 181;
  245.   199!48  :    SB0:1 := SI0:1 > 1; line 48 column 2 
  246.   200  :    IF SB0:1 GOTO 98;
  247.   201!86  :    WRITE " FINAL IMAGE"; line 86 column 2 
  248.   202  :    END;    IMAGE_ROTATION
  249. STOP
  250.